package com.jshoperxms.components.wechat.pay;

import java.io.InputStream;

/**
 * @author WCS.Wang
 * @version V1.0
 * @Package com.hsz.redcross.controller.pay
 * @Name red-cross-plus
 * @Description: TODO (用一句话描述该文件做什么)
 * @date 2018/7/10
 */
public interface WXPayConfig {


    /**
     * 获取 App ID
     *
     * @return App ID
     */
    String getAppID();


    /**
     * 获取 Mch ID
     *
     * @return Mch ID
     */
    String getMchID();


    /**
     * 获取 API 密钥
     *
     * @return API密钥
     */
    String getKey();


    /**
     * 获取商户证书内容
     *
     * @return 商户证书内容
     */
    InputStream getCertStream();

    /**
     * HTTP(S) 连接超时时间，单位毫秒
     *
     * @return
     */
    int getHttpConnectTimeoutMs();

    /**
     * HTTP(S) 读数据超时时间，单位毫秒
     *
     * @return
     */
    int getHttpReadTimeoutMs();

    /**
     * 获取WXPayDomain, 用于多域名容灾自动切换
     *
     * @return
     */
    IWXPayDomain getWXPayDomain();

    /**
     * 是否自动上报。
     * 若要关闭自动上报，子类中实现该函数返回 false 即可。
     *
     * @return
     */
    boolean shouldAutoReport();

    /**
     * 进行健康上报的线程的数量
     *
     * @return
     */
    int getReportWorkerNum();


    /**
     * 健康上报缓存消息的最大数量。会有线程去独立上报
     * 粗略计算：加入一条消息200B，10000消息占用空间 2000 KB，约为2MB，可以接受
     *
     * @return
     */
    int getReportQueueMaxSize();

    /**
     * 批量上报，一次最多上报多个数据
     *
     * @return
     */
    int getReportBatchSize();

    /**
     * 支付类型
     *
     * @return
     */
    String getTradeType();

    /**
     * 接受财付通通知的URL
     *
     * @return
     */
    String getNotifyUrl();


    /**
     * 获取本机ip
     * @return
     */
    String getHostIP();

    /**
     * 加密方式
     * @return
     */
    String getSignType();

}
